// 设置a的类型为unknown
let a: unknown;

// /以下对a的赋值，均正常
a = 1;
console.log(typeof a); // number
a = "2";
console.log(typeof a); // string
a = false;
console.log(typeof a); // boolean
// 随着对a的动态赋值a的类型也会随之改变

// 设置x的数据类型为string
let x = "abc";
// x = a //警告：不能将类型“unknown”分配给类型“string”

// 若想将 a 赋值给 x 有如下三种写法：
// 第一种方法：加类型判断,当a的类型为string时,才赋值给x,避免出现类型错误
if (typeof a === "string") {
  x = a;
}

// 第二种方式：类型断言 告诉解析器变量的实际类型
x = a as string; 

// 第三种方式：类型断言 告诉解析器变量的实际类型
x = <string>a;
